﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Tipler.DataSetler;
using Tipler.Enumlar;
using Tipler.OzellikTipleri;
using Tipler.Siniflar;
using System.Data;
using IsKurallari.Tanimlama;

namespace TapuKadastroWeb
{
    [YetkiAttribute(EnumSayfaYetkileri.Herkes_Yetkili)]
    public partial class SozlesmeDonem : BasePage
    {
        #region Özellikler

        private int SecilenSozlesmeDonemID
        {
            get { return (int)Session["SozlesmeDonem_SecilenSozlesmeDonemID"]; }
            set { Session["SozlesmeDonem_SecilenSozlesmeDonemID"] = value; }
        }
        private SozlesmeDonemDataSet SozlesmeDonemListesi
        {
            get { return (SozlesmeDonemDataSet)Session["SozlesmeDonem_SozlesmeDonemListesi"]; }
            set { Session["SozlesmeDonem_SozlesmeDonemListesi"] = value; }
        }

        #endregion

        #region Sayfa Başlangıç

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {

                SecilenSozlesmeDonemID = -1;
                SozlesmeDonemListesi = null;
                SozlesmeDonemListele();
                mv.SetActiveView(vListe);

            }
        }

        #endregion

        #region Private Metodlar

        private void SozlesmeDonemListele()
        {
            SecilenSozlesmeDonemID = -1;


            TanimlamaIsKurali oTanimlama = new TanimlamaIsKurali();
            FonksiyonSonuc<SozlesmeDonemDataSet> oSonuc = oTanimlama.SozlesmeDonemGetir();

            SozlesmeDonemListesi = oSonuc.Sonuc;
            grdSozlesmeDonemListe.DataSource = SozlesmeDonemListesi;
            grdSozlesmeDonemListe.DataBind();
        }

        private void FormTemizle()
        {

            ucSozlesmeNumarasi.Clear();
            ucSozlesmeYil.Clear();

            SecilenSozlesmeDonemID = -1;
        }

        private void FormDoldur()
        {
            SozlesmeDonemDataSet.SozlesmeDonemRow dr = SozlesmeDonemListesi.SozlesmeDonem.FindBySozlesmeDonemID(SecilenSozlesmeDonemID);

            ucSozlesmeYil.Sayi = dr.DonemYil;
            ucSozlesmeNumarasi.Sayi = dr.SozlesmeNumarasi;
        }

        #endregion

        #region Olay Metodları

        protected void btnKaydet_Click(object sender, EventArgs e)
        {

            if (SozlesmeDonemListesi.SozlesmeDonem.Select("SozlesmeDonemID<>" + SecilenSozlesmeDonemID +" and DonemYil="+ucSozlesmeYil.Sayi).Length> 0)
            {
                MesajGoster(Page, "Aynı yıldan 2 tane bulunamaz!!!!", MesajTipiEnum.Uyari);
                return;
            }

            SozlesmeDonemDataSet.SozlesmeDonemRow drSozlesmeDonem;
            if (SozlesmeDonemListesi == null) SozlesmeDonemListesi = new SozlesmeDonemDataSet();

            if (SecilenSozlesmeDonemID == -1)
            {
                drSozlesmeDonem = SozlesmeDonemListesi.SozlesmeDonem.NewSozlesmeDonemRow();

            }
            else
            {
                drSozlesmeDonem = SozlesmeDonemListesi.SozlesmeDonem.FindBySozlesmeDonemID(SecilenSozlesmeDonemID);
            }

            
            drSozlesmeDonem.SozlesmeNumarasi = ucSozlesmeNumarasi.Sayi;
            drSozlesmeDonem.DonemYil = ucSozlesmeYil.Sayi;

            if (SecilenSozlesmeDonemID == -1)
                SozlesmeDonemListesi.SozlesmeDonem.AddSozlesmeDonemRow(drSozlesmeDonem);

            if (SozlesmeDonemListesi.HasChanges())
            {
                TanimlamaIsKurali oTanimlama = new TanimlamaIsKurali();
                FonksiyonSonuc<SozlesmeDonemDataSet> oSonuc = oTanimlama.SozlesmeDonemKaydet((SozlesmeDonemDataSet)SozlesmeDonemListesi.GetChanges());
                if (oSonuc.HataVarMi)
                {
                    SozlesmeDonemListesi.RejectChanges();
                    throw new Exception(oSonuc.Hata);
                }


                SozlesmeDonemListesi.AcceptChanges();
                SecilenSozlesmeDonemID = Convert.ToInt32(oSonuc.Sonuc.SozlesmeDonem.Rows[oSonuc.Sonuc.SozlesmeDonem.Count - 1]["SozlesmeDonemID"].ToString());
            }


            grdSozlesmeDonemListe.DataSource = SozlesmeDonemListesi;
            grdSozlesmeDonemListe.DataBind();
            FormTemizle();
            mv.SetActiveView(vListe);
            MesajGoster(Page, "Sözleşme dönem bilgisi başarıyla kaydedilmiştir", MesajTipiEnum.Basari);
        }

        protected void btnYeniKayit_Click(object sender, EventArgs e)
        {
            FormTemizle();
            mv.SetActiveView(vKayit);
        }

        protected void btnListele_Click(object sender, EventArgs e)
        {
            SozlesmeDonemListele();
        }
        protected void btnGeri_Click(object sender, EventArgs e)
        {
            SecilenSozlesmeDonemID = -1;
            mv.SetActiveView(vListe);
        }

        protected void grdSozlesmeDonemListe_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName != "Page")
            {
                int rowIndex = Convert.ToInt32(e.CommandArgument);
                int id = Convert.ToInt32(grdSozlesmeDonemListe.DataKeys[rowIndex].Value.ToString());

                if (e.CommandName == "duzenle")
                {
                    FormTemizle();
                    SecilenSozlesmeDonemID = id;
                    FormDoldur();
                    mv.SetActiveView(vKayit);
                }
                if (e.CommandName == "sil")
                {
                    SozlesmeDonemDataSet.SozlesmeDonemRow drSozlesmeDonem = SozlesmeDonemListesi.SozlesmeDonem.FindBySozlesmeDonemID(id);
                    drSozlesmeDonem.Delete();

                    if (SozlesmeDonemListesi.HasChanges())
                    {
                        TanimlamaIsKurali oTanimlama = new TanimlamaIsKurali();
                        FonksiyonSonuc<SozlesmeDonemDataSet> oSonuc = oTanimlama.SozlesmeDonemKaydet((SozlesmeDonemDataSet)SozlesmeDonemListesi.GetChanges());
                        if (oSonuc.HataVarMi)
                        {
                            SozlesmeDonemListesi.RejectChanges();
                            throw new Exception(oSonuc.Hata);
                        }


                        SozlesmeDonemListesi.AcceptChanges();
                    }

                    grdSozlesmeDonemListe.DataSource = SozlesmeDonemListesi;
                    grdSozlesmeDonemListe.DataBind();
                    FormTemizle();
                    mv.SetActiveView(vListe);
                    MesajGoster(Page, "Sözleşme Dönem bilgisi başarıyla silinmiştir.", MesajTipiEnum.Basari);
                }
            }
        }

        protected void grdSozlesmeDonemListe_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                SozlesmeDonemDataSet.SozlesmeDonemRow dr = (SozlesmeDonemDataSet.SozlesmeDonemRow)((DataRowView)(e.Row.DataItem)).Row;

            }
        }

        protected void grdSozlesmeDonemListe_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            grdSozlesmeDonemListe.DataSource = SozlesmeDonemListesi;
            grdSozlesmeDonemListe.PageIndex = e.NewPageIndex;
            grdSozlesmeDonemListe.DataBind();
        }
        #endregion

    }
}
